home *** CD-ROM | disk | FTP | other *** search
/ Your Choice 3 / Your Choice Software Collection 3.iso / dos / gus190 / gus.doc < prev    next >
Text File  |  1994-08-07  |  67KB  |  1,344 lines

  1.                   ╔══════════════════════════════════════════╗
  2.                   ║       █▀▀▀▀▀▀█  █      █  █▀▀▀▀▀▀█       ║
  3.                   ║       █         █      █  █              ║
  4.                   ║       █   ▀▀██  █     ██  ▀▀▀▀▀▀██       ║
  5.                   ║       █     ██  █     ██  ▄     ██       ║
  6.                   ║       ████████  ████████  ████████       ║
  7.                   ║       ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡       ║
  8.                   ║           General Unpack Shell           ║
  9.                   ║           version 1.90 for DOS           ║
  10.                   ╚══╤═════════════════════════════════════╤═╝
  11.                      │  Copyright (C) 1994 and written by  │
  12.                      │          Johan Zwiekhorst           │
  13.                      │       - ALL RIGHTS RESERVED -       │
  14.                      └─────────────────────────────────────┘
  15.  
  16.  
  17.                        T A B L E   O F   C O N T E N T S
  18.                        *********************************
  19.  
  20.       1. LEGAL STUFF
  21.          The no-nonsense licence statement
  22.          Warranty
  23.          Contact
  24.          Payment
  25.          What you should have received
  26.  
  27.       2. INTRODUCTION
  28.  
  29.       3. USAGE
  30.          3.1. General Usage under DOS
  31.               SYSTEM REQUIREMENTS
  32.               COMMAND-LINE PARAMETERS
  33.               NOTE
  34.               EXAMPLES
  35.               EXIT CODES
  36.          3.2. Unpacking Mailarchives
  37.          3.3. Identifying Archive Types
  38.  
  39.       4. BUILT-IN DEFINITIONS
  40.          4.1. Built-in Unpacker Definitions
  41.          4.2. How To Define Other Unpackers
  42.  
  43.       5. GUS & OTHER SHELLS
  44.  
  45.       6. HOW GUS IDENTIFIES ARCHIVES
  46.          6.1. Recognition patterns as used by GUS
  47.          6.2. Record layout of ARC/ARC+/PAK
  48.          6.3. How GUS identifies SFX (self-extracting) archives
  49.          6.4. Mandatory order of scanning the patterns
  50.  
  51.       7. RUNTIME MESSAGES
  52.          [A] General information messages
  53.          [B] Warning messages
  54.          [C] Fatal error messages
  55.  
  56.       8. ACKNOWLEDGEMENTS
  57.  
  58.       9. REVISION HISTORY
  59.  
  60. ═══════════════════════════════════════════════════════════════════════════════
  61.       ╒════════════════╕
  62.       │ 1. LEGAL STUFF │
  63.       ╘════════════════╛
  64.  
  65.       This software is copyrighted (C) 1989, 1990, 1991, 1992, 1993, 1994
  66.       and written by Johan Zwiekhorst, hereafter called the Author and Owner.
  67.       All Rights Reserved.
  68.  
  69.       The No-Nonsense Licence Statement
  70.       =================================
  71.       This software and everything enclosed with it are protected by both
  72.       Belgian copyright law and international treaty provisions.
  73.       It is called "freeware".
  74.  
  75.       FREEWARE software may be used, copied and distributed freely for
  76.       NONCOMMERCIAL use only IF:
  77.       ▀▀▀▀▀▀▀▀▀▀▀▀▀
  78.  
  79.               NO FEE IS CHARGED FOR USE, COPYING OR DISTRIBUTION.
  80.  
  81.               IT IS NOT MODIFIED IN ANY WAY.
  82.  
  83.       It may be distributed ONLY in it's original, unmodified compressed
  84.       package file.                                ~~~~~~~~~~
  85.  
  86.       This means you may not add comments to the compressed package file
  87.       (also known as an archive file or simply an archive), nor may you
  88.       delete files from or add files to the archive file, UNLESS YOU HAVE
  89.       A WRITTEN PERMISSION TO DO SO.
  90.  
  91.       Converting the archive file to another compression method or
  92.       another archive file format is allowed, provided that the above
  93.       conditions are met.
  94.  
  95.       The original package as released by me is in Yoshi's LZH archive
  96.       format. (See below for what you should have received.)
  97.       In order to extract the files from an LZH archive under DOS, you
  98.       will need to get the file LHA***.EXE, where '***' stands for the
  99.       version number of the program LHA.  At the time this is written,
  100.       the latest version is 2.13, so look for LHA213.EXE.
  101.       If you are using OS/2, look for Peter Fitzsimmons' LH2 program.
  102.       The latest version of LH2 is 2.22, so look for LH2_222.EXE.
  103.       Note, that recompressing the archive will nearly always result
  104.       in a bigger archive.
  105.  
  106.       The use of FREEWARE software is prohibited in a governmental
  107.       or commercial situation. In these cases, this software must be
  108.       purchased and a Commercial Licence Statement will then be provided
  109.       for.  You may write to the Owner at the address below for more
  110.       information.
  111.  
  112.       Warranty
  113.       ========
  114.       This software is provided AS IS without any warranty, expressed or
  115.       implied, including but not limited to fitness for a particular
  116.       purpose.
  117.       IN NO EVENT SHALL THE AUTHOR/OWNER OF THIS PRODUCT BE LIABLE FOR
  118.       ANY DIRECT OR CONSEQUENTIAL LOSS OR DAMAGES WHICH MAY HAVE ARISEN
  119.       FROM THE USE OF THIS PRODUCT.
  120.       If your local law does not permit any of the statements made above,
  121.       or if you do not agree with any of them yourself, THEN YOU ARE NOT
  122.       LICENCED TO USE THIS PROGRAM!
  123.  
  124.       Contact
  125.       =======
  126.       The Author can be reached via a Bulletin Board System (BBS) and
  127.       electronic mail at the Tripod BBS.
  128.  
  129.       Phone lines:
  130.  
  131.        [due to a move, none are currently available]
  132.  
  133.       Network addresses:
  134.  
  135.       Internet       jz@nfe.be
  136.  
  137.       Compuserve     >INTERNET:jz@nfe.be
  138.                      
  139.       FIDOnet        2:292/100
  140.                      2:292/118
  141.  
  142.  
  143.       Main support BBS:
  144.       (please call this system while Tripod BBS is off-line)
  145.  
  146.       Tornado Belgium BBS, sysop Frank Van Uffelen
  147.  
  148.       Phone lines:
  149.  
  150.       +32-16-640582     V.34
  151.       +32-16-640465     V.34
  152.       +32-16-640466     V.32bis
  153.  
  154.       Network addresses:
  155.  
  156.       Internet       fvu@nfe.be
  157.  
  158.       Compuserve     >INTERNET:fvu@nfe.be
  159.                      
  160.       FIDOnet        2:292/600
  161.  
  162.  
  163.       The Owner can be contacted at the following address:
  164.  
  165.       Johan Zwiekhorst
  166.       Dorpheidestraat 63/B
  167.       3590 DIEPENBEEK (Belgium)
  168.       Phone [not yet available] during office hours, Central European Time.
  169.  
  170.       Payment
  171.       =======
  172.       If you would like to use this product in a commercial or
  173.       governmental situation, please contact the Owner at the address
  174.       above. You will then learn the price of the product and a
  175.       Commercial Licence Statement will be made available to you.
  176.  
  177.       For all others, this product is free, as mentioned before.
  178.       But if you would like to support the Author and encourage him to
  179.       write more useful software, you're welcome to pay some money.
  180.       You may pay whatever you feel the product is worth to you.
  181.       Note that this kind of freeware products is developed entirely in
  182.       the Author's leisure time and he receives absolutely no
  183.       compensation for it, apart from what you as a user would pay him.
  184.  
  185.       If you pay at least U.S. $15 (BEF 500, NLG 30, DEM 25), you will
  186.       receive, when available, a 5.25" or 3.5" floppy diskette with the
  187.       next version.  Please specify which.
  188.       Immediately after receiving your payment, I will send you an acknow-
  189.       ledgement and a list of the latest versions of all freeware I wrote.
  190.       Payments to the Author can be sent in cash to the address mentioned
  191.       above or transferred to the following bank account:
  192.       Bank Brussel Lambert (Belgium) - account number 335-0076382-89
  193.  
  194.       ***NOTE THAT THIS IS FOR NON-COMMERCIAL SITUATIONS ONLY!
  195.  
  196.       For all payments made: please specify NAME and VERSION NUMBER of
  197.       the product!
  198.  
  199.  
  200.       What you should have received:
  201.       ==============================
  202.  
  203.       You should have received the file
  204.  
  205.       GUS_190.LZH - (37074 bytes)
  206.  
  207.       with the following contents:
  208.  
  209.       ┌──────────┐  ┌─────┐ ┌─────────────────────────┐
  210.       │ filename │  │bytes│ │ description             │
  211.       └══════════┘  └═════┘ └═════════════════════════┘
  212.       FILE_ID .DIZ     353  Short description for BBS sysops.
  213.       GUS     .DOC   66984  This documentation.
  214.       GUS     .EXE   12496  The program file.           CRC/32 = d6c4e508
  215.       GUS_WCFG.PAS    6702  TP source for a program     CRC/32 = 02803c5d
  216.                             that writes a new configur-
  217.                             ation into GUS.EXE.
  218.  
  219.       You may also use the program VALIDATE from McAfee Associates for
  220.       the purpose of checking the authenticity of the program file(s).
  221.       It should produce the following:
  222.  
  223.                 File Name:  gus.exe             gus_wcfg.pas
  224.                      Size:  12,496              6,702
  225.                      Date:  8-7-1994            8-7-1994
  226.       File Authentication:
  227.            Check Method 1 - 81FD                1FD2
  228.            Check Method 2 - 0DE7                16B7
  229.  
  230.  
  231.       GUS is available for several operating systems:
  232.  
  233.       ┌──────┐ ┌────────────┐  ┌─────────────────────────────┐
  234.       │system│ │look for    │  │comment                      │
  235.       └══════┘ └════════════┘  └═════════════════════════════┘
  236.        DOS      GUS_???.LZH     current release: GUS_190.LZH
  237.        OS/2     GUS2_???.LZH    (will be available soon)
  238.        Win/NT   GUSw_???.LZH    (not yet available)
  239.  
  240.  
  241.       ╒═════════════════╕
  242.       │ 2. INTRODUCTION │
  243.       ╘═════════════════╛
  244.  
  245.       The General Unpack Shell, or GUS, identifies compressed file types
  246.       and calls the correct unpacker in order to extract the files from
  247.       them.
  248.       Its main purpose is, of course, to take work out of YOUR hands.
  249.       You can use GUS with its straight-forward and easy to remember
  250.       commands instead of having to learn a new set of commands each time
  251.       a new archiver sees the daylight.
  252.  
  253.       GUS will also work nicely in automated tasks, where any type of
  254.       archive should be uncompressed, or where a certain file has to be
  255.       added to any given archive.
  256.  
  257.       GUS was made to be command-line compatible with the ARCE.COM
  258.       unpacker program by Vernon Buerg.  This makes it possible for you
  259.       to rename GUS.EXE to ARCE.COM and have it invoked by any program
  260.       that expects both ARCE and SEA's ARC-type compressed files, so that
  261.       such a program will in fact work with any archive format YOU
  262.       choose. Ben Baker's MAKENL is but one example of such a program.
  263.  
  264.       GUS does not require you to fiddle with cumbersome and difficult
  265.       configuration files: it's just a single EXE file.  You copy it into
  266.       your favourite utility directory and you can immediately start
  267.       using it, no hassles at all.
  268.  
  269.  
  270.       ╒══════════╕
  271.       │ 3. USAGE │
  272.       ╘══════════╛
  273.  
  274.       GUS assumes you have located all archiver programs it has to invoke
  275.       somewhere in your system PATH.
  276.       GUS is small and it will only occupy about 30K while shelling out
  277.       to other programs, which should leave more than enough memory for
  278.       those archiver programs.
  279.  
  280.       3.1. General Usage under DOS
  281.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  282.       SYSTEM REQUIREMENTS:
  283.       --------------------
  284.       GUS will run on any IBM PC compatible computer running DOS 3.0 or
  285.       greater, provided that at least 32K plus the memory needed by the
  286.       largest archiver program to invoke is available.
  287.  
  288.       COMMAND-LINE PARAMETERS:
  289.       ------------------------
  290.       As said before, GUS is command-line compatible with ARCE.
  291.       Hence, the general syntax is:
  292.  
  293.       GUS «compressed_filespec» [filespec(s)] [target_path] [switch(es)]
  294.  
  295.       (Entries enclosed within [] are optional, those within « » are
  296.       mandatory.  The [] and « » signs serve to indicate this only and
  297.       should never be typed!)
  298.  
  299.       «compressed_filespec»  ::=  this specifies where to find the
  300.                                   compressed file.  If an extension
  301.                                   is not given, GUS will assume '.*'.
  302.                                   Currently, the following archive types
  303.                                   are supported: ARC and ARC+, ARJ, DWC,
  304.                                   HA, HAP, HPK, HYP, LZH (both LHarc and LHA),
  305.                                   PAK, RAR, SQZ, UC2, ZIP and ZOO.
  306.  
  307.       [filespec(s)]          ::=  specifies which files should be
  308.                                   unpacked. You may give more than one
  309.                                   file specification, all of which may
  310.                                   contain wildcards.
  311.  
  312.       [target_path]          ::=  specifies where to locate the unpacked
  313.                                   files.  In order to allow GUS to be as
  314.                                   flexible as possible, the ordering of
  315.                                   the file specifications and the target
  316.                                   path is not important.  You may define
  317.                                   the target path first and then the
  318.                                   files to be extracted.  It is even
  319.                                   allowed to put the target path in the
  320.                                   middle of a number of specifications of
  321.                                   files to extract!  If you give more
  322.                                   than one directory, GUS will ignore all
  323.                                   but the last.
  324.  
  325.       [switch(es)]           ::=  specifies one or more of the following
  326.                                   switches...
  327.          /D     :  Delete archive after successful unpacking
  328.          /I     :  Identify only, don't shell out (see 3.3 below)
  329.          /M     :  unpack Mailarchives only (see 3.2 below)
  330.          /N     :  do Not use embedded path while extracting
  331.                    (for the sake of compatibility with ARCE, /5 may also be
  332.                    used)
  333.          /P     :  Print file(s) on standard output device
  334.          /Q     :  Quiet mode, suppresses shell output
  335.          /R     :  Replace existing files
  336.          /T     :  Test archive integrity
  337.          /V     :  View archive contents
  338.          /Gpswd :  supply password 'pswd' for Garbled archive
  339.  
  340.       All parameters have to separated by at least one blank.  Switches
  341.       may be joined together without spaces, but the '/' character must
  342.       be present for each switch.  GUS does not support the dash '-'
  343.       instead of the slash '/'.
  344.       Options may be given in no matter what case. Only the Delete option
  345.       _has_ to be in uppercase for safety reasons.
  346.  
  347.       NOTE:
  348.       -----
  349.       Consistent with ARCE's behaviour, GUS will create any directories
  350.       contained within an archive if they do not exist.  Both ARCE and GUS
  351.       have a commandline switch with which you can prevent this and have
  352.       them extract to the current directory.
  353.       If you are using the /M (mail archive) switch however, use of the
  354.       /N (No embedded paths) switch is automatically assumed and unpacking
  355.       will always be done in the current directory.
  356.       With /M, the option /D (Delete archive after successful unpacking) is
  357.       also automatically selected.
  358.       The /N switch is equally automatically invoked with /P (print) and /T
  359.       (test).
  360.       Since SEA's XARC program cannot list the directory of an ARC+ (A7+)
  361.       archive, GUS will switch to the program configured for the regular
  362.       ARC type instead in order to execute the View Contents command.
  363.  
  364.       EXAMPLES:
  365.       ---------
  366.       1) Extract all files from an archive CFILE.ANY:
  367.          > GUS CFILE.ANY
  368.  
  369.       2) Extract all *.COM and *.EXE files from an archive UTILS.ANY
  370.          into a target directory D:\Utils and replace all existing ones:
  371.          > GUS UTILS.ANY *.COM *.EXE D:\UTILS /R/N
  372.  
  373.       3) A batchfile LA.BAT which will list any text file inside any
  374.          archive:
  375.          LA.BAT: @echo off
  376.                  GUS %1 %2 %3 %4 %5 %6 %7 %8 %9 /P|LIST/S
  377.  
  378.          Then you can use this like:   LA KBUI_201 *.DOC
  379.  
  380.       4) Test the integrity of all archives in the directory F:\Arcs
  381.          > GUS F:\ARCS\* /T
  382.  
  383.       5) Unpack all ZIPfiles PW*.ZIP protected with password JiMmY into
  384.          the directory D:\PWS, not replacing any existing files and using
  385.          embedded paths, if any:
  386.          > GUS PW*.ZIP D:\PWS /GJiMmY
  387.  
  388.       EXIT CODES:
  389.       -----------
  390.       GUS will yield an errorlevel of 0 if all operations succeeded.
  391.       If something's wrong, it will pass on the errorlevel returned by
  392.       the child program invoked.
  393.       If the child program could not be started, GUS will return
  394.       errorlevel 202 = no such program file found in PATH
  395.                  203 = non-existing directory
  396.                  204 = too many open files (increase FILES=... parameter
  397.                        in your CONFIG.SYS file)
  398.                  205 = access denied
  399.                  206 = invalid handle
  400.                  208 = not enough memory to start the child program
  401.                  210 = invalid environment
  402.                  211 = invalid format
  403.                  218 = no more files
  404.       If the child program could be started but something else is wrong,
  405.       GUS will return
  406.       errorlevel   1 = for all errors not reported in the list below
  407.                  220 = no such (mail) directory
  408.                  221 = no such file(s)
  409.       Note, that GUS will not be able to handle a PATH of more than 255
  410.       characters properly.
  411.  
  412.  
  413.       3.2. Unpacking Mailarchives
  414.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  415.       If you are a BBS SysOp or a Point connected to a Fidonet Technology
  416.       compatible electronic mail network, you receive mail packets
  417.       compressed and bundled within mailarchives.  You obviously need to
  418.       unpack those mailarchives.
  419.       You can do that in two ways:
  420.  
  421.       a) Have your mailprocessor call GUS to unpack the mailarchives.
  422.  
  423.        + If your mailprocessor allows you to specify which unpacker it
  424.          should invoke to decompress mailarchives, have it call GUS.
  425.          Example for ConfMail:
  426.          > CM IMPORT AREAS.BBS -K -N -F Conf.Imp -A GUS
  427.          This approach has the disadvantage that GUS will create any
  428.          directories embedded in the archive, should they not exist.
  429.          Another disadvantage is, that the mailprocessor is still in memory.
  430.          This occupies a lot more memory than is necessary.
  431.  
  432.        + If your mailprocessor does not allow you to specify which
  433.          unpacker to use, it will most likely expect ARCE or PKXARC/
  434.          PKUNPAK.  Rename GUS.EXE to ARCE.COM or PKXARC.EXE or
  435.          PKUNPAK.EXE, whatever your mailprocessor wants.
  436.          If your mailprocessor wants to use an unpacker that needs a
  437.          specific decompress command (like PAK E Archive), you cannot
  438.          have it call GUS, since GUS would interpret its first
  439.          command-line argument as the archive name.
  440.          Use the method described in item b) to have GUS unpack your
  441.          mailarchives BEFORE your mailprocessor is started.  Since your
  442.          mailprocessor will only see mail packets then and no
  443.          mailarchives, there will be no problem.
  444.  
  445.       b) Have GUS unpack all mailarchives BEFORE you invoke your
  446.          mailprocessor. This is the preferred method.
  447.          You do this by starting GUS with the following command-line:
  448.  
  449.          GUS «Inbound_directory» /M
  450.  
  451.          Instead of the archive name, you specify the path to the
  452.          directory where your inbound mail is located.
  453.          Suppose your inbound directory is D:\Opus\NetFiles.  GUS will
  454.          unpack all mailarchives in that directory with the following
  455.          command:
  456.          > GUS D:\OPUS\NETFILES /M
  457.  
  458.          After a mailarchive has been unpacked succesfully, GUS will
  459.          delete it automatically.
  460.          If a mailarchive cannot be unpacked succesfully, then GUS will
  461.          create a subdirectory BADARC.GUS in your inbound directory and
  462.          move that mailarchive to it.  This allows you to inspect the
  463.          problematic mailarchives later on while retaining their original
  464.          name.  Other unpack shells always rename a faulty archive to
  465.          BADARC.001, which makes it very difficult if you would like to
  466.          restore the archive to its original name after you have
  467.          inspected and maybe repaired it.  I didn't like that procedure,
  468.          so I decided to let GUS move problematic archives to a special
  469.          subdirectory instead.  Let me know how you feel.
  470.  
  471.  
  472.       3.3. Identifying Archive Types
  473.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  474.       With the /I switch, you can have GUS simply report which archive
  475.       type is at hand and do nothing else.
  476.       This switch can be used just to get a list of archive types, like
  477.       this:
  478.       > GUS J:\Outbound\*.MO? /I
  479.  
  480.       Type Archive Filename
  481.       ---- ----------------
  482.       LZH  J:\OUTBOUND\0009FE64.MO1
  483.       ???  J:\OUTBOUND\8FDCB1E2.MO1
  484.       ZIP  J:\OUTBOUND\8FDCB243.MO0
  485.       ARJ  J:\OUTBOUND\FF24FFE9.MO0
  486.       LZH  J:\OUTBOUND\8FDCB241.MO0
  487.  
  488.       GUS yields something like the above list.  The '???' means that GUS
  489.       was unable to determine the archive type, possibly because it isn't
  490.       an archive at all.  In this case, it was a zero-length file.
  491.  
  492.       A much more useful way of using this switch is to determine the
  493.       type of just one archive and act upon that.  For instance, to add a
  494.       file to any archive that comes along.
  495.       If used with /I, GUS will return an errorlevel from 0 to 15,
  496.       indicating the archive type.
  497.  
  498.       Archive Type: Unknown ARC ARC+ ARJ DWC  HA HAP HPK HYP LZH PAK
  499.       Errorlevel  :    0      1   2    3   4   5   6   7   8   9  10
  500.       Archive Type:         RAR SQZ  UC2 ZIP ZOO
  501.       Errorlevel  :          11  12   13  14  15
  502.  
  503.       Example: suppose you want to add a header text LOGO.TXT to ZIP and
  504.       ARJ files, and leave other archive types alone.
  505.       These batchfile instructions will take care of that:
  506.  
  507.         GUS %1 /I
  508.         if not errorlevel 15 if errorlevel 14 goto IsZIP
  509.         if not errorlevel  4 if errorlevel  3 goto IsARJ
  510.         goto Finish
  511.       :IsZIP
  512.         PKZIP -z %1 <LOGO.TXT
  513.         goto Finish
  514.       :IsARJ
  515.         ARJ c -zLOGO.TXT %1
  516.       :Finish
  517.  
  518.       Please be advised that the errorlevel codes assigned to each archive
  519.       type may change! If a new archive type is added to GUS, its extension
  520.       will be merged into the list shown above so that the order of the
  521.       extensions is alphabetical. If you don't like this and would rather see
  522.       new types simply be added to the end of the list, let me know. I will
  523.       comply with your wishes if enough people feel like that.
  524.       At this time, I like to have an alphabetical list and so do most of the
  525.       people I asked about this.
  526.  
  527.  
  528.       ╒═════════════════════════╕
  529.       │ 4. BUILT-IN DEFINITIONS │
  530.       ╘═════════════════════════╛
  531.  
  532.       4.1. Built-In Unpacker Definitions
  533.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  534.       The following unpackers are defined by default within GUS.EXE:
  535.  
  536.       ╔════╤════════════╤═══════╤═══════╤═══════╤═════╤═════╤═════╤════════╗
  537.       ║Type│Program     │Extract│Replace│Display│Test │View │Path │Password║
  538.       ╟────┼────────────┼───────┼───────┼───────┼─────┼─────┼─────┼────────╢
  539.       ║ARC │PKUNPAK .EXE│-n     │-r     │-c     │-t   │-v   │*****│g       ║
  540.       ║A7+ │XARC    .EXE│       │/o     │*****  │*****│*****│*****│/g      ║
  541.       ║ARJ │ARJ     .EXE│e -uy  │e -y   │p      │t    │l    │<x   │─g      ║
  542.       ║DWC │DWC     .EXE│xow    │xw     │p      │t    │v    │r    │g       ║
  543.       ║HA  │HA      .EXE│et     │ety    │*****  │t    │l    │<x   │*****   ║
  544.       ║HAP │PAH     .EXE│e      │e      │*****  │**** │l    │*****│*****   ║
  545.       ║HPK │HPACK   .EXE│x -on  │x -oa  │p      │t    │v    │-da  │-c      ║
  546.       ║HYP │HYPER   .EXE│-x     │-xo    │*****  │*****│-v   │p    │*****   ║
  547.       ║LZH │LHA     .EXE│e /m+  │e /m+c+│p /m+  │t /m+│l    │x+   │*****   ║
  548.       ║PAK │PAK     .EXE│e/WO   │e/WA   │p      │t    │l    │/PATH│/g=     ║
  549.       ║RAR │RAR     .EXE│e -o-  │e -o+  │p      │t    │l    │<x   │-p      ║
  550.       ║SQZ │SQZ     .EXE│e /o0  │e /o1  │p      │t    │l    │<x   │*****   ║
  551.       ║UC2 │UC      .EXE│E      │E -F   │$PRF   │T    │V    │-S   │*****   ║
  552.       ║ZIP │PKUNZIP .EXE│-n     │-o     │-c     │-t   │-v   │-d   │-s      ║
  553.       ║ZOO │ZOO     .EXE│e:O    │e:OS   │e:p    │e:N  │lC   │//   │*****   ║
  554.       ╟────┼────────────┼───────┼───────┼───────┼─────┼─────┼─────┼────────╢
  555.       ║ 3  │    12      │  10   │  10   │  10   │ 10  │ 10  │  5  │   5    ║
  556.       ╚════╧════════════╧═══════╧═══════╧═══════╧═════╧═════╧═════╧════════╝
  557.       The numbers above indicate the number of characters provided for
  558.       each string.
  559.  
  560.       Note that Extract, Replace, Display, Test and View are COMMANDS,
  561.       while Path and Password are OPTIONS.  The difference is, that an
  562.       OPTION is always combined with a COMMAND and cannot be used alone.
  563.       If the first character of the Path option is a `<', however, it means
  564.       that the second character should be used to replace the first command
  565.       string character. This is, for instance, the case with ARJ, HA, RAR and
  566.       SQZ, who all need the `e' command to be replaced with `x' in order to
  567.       extract files while using embedded path information.
  568.  
  569.       All spaces means that that particular program does not need any
  570.       parameters for that particular command.
  571.  
  572.       All stars means that that particular program does not support that
  573.       command or that option.
  574.  
  575.       NOTE: the $PRF command for the UC rev. 2 archiver will actually print
  576.       files to the printer and not to StdOut as we would like to have it.
  577.       The solution is easy enough, though. UC.EXE will call a batchfile
  578.       U2_PRINT.BAT to actually do the printing. Edit that batchfile and
  579.       remove all " > PRN" redirections, then the output will go to StdOut.
  580.  
  581.       ATTENTION! When encountering an ARC sfx made by SEA's MKSARC program,
  582.       GUS will identify it correctly, but PKUNPAK can't handle this sfx and
  583.       will therefore exit with an error. If you expect to handle a lot of
  584.       MKSARC sfx files, then you'd better replace PKUNPAK by ARC 6.02 in
  585.       GUS' configuration segment.
  586.  
  587.       You may want to redefine some of those built-in definitions for
  588.       various reasons. To use another unpacker program, for instance.
  589.       Or to change some parameters.
  590.  
  591.  
  592.       4.2. How To Define Other Unpackers
  593.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  594.       There are two ways to modify the built-in definitions.
  595.  
  596.       You can grab a hex editor and change GUS.EXE directly. (The unpacker
  597.       definitions were appended to GUS.EXE, so you'll find them at the end
  598.       of the file.)
  599.       If you do, please take note of the lengths of the strings as listed
  600.       above in section 4.1. All strings occupy the specified number of
  601.       characters. To achieve that, they were padded with spaces where
  602.       necessary. When you edit them, make sure you retain the number of
  603.       characters and do NOT change the funny looking character at the start
  604.       of each string (that's in fact the string length indicator byte).
  605.       If a particular parameter is not supported by a certain unpacker
  606.       program, then you should edit the appropriate field to contain all
  607.       stars.
  608.  
  609.       If you own a Turbo Pascal compiler v5.0 or later from Borland
  610.       International, you can edit the file GUS_WCFG.PAS and re-compile it.
  611.       This small program will update the configuration information at the
  612.       end of GUS.EXE for you. Do *NOT* modify the record layout of that
  613.       information, since GUS will not recognize it anymore if you do.
  614.  
  615.       Future versions of GUS may come with a complete setup program to
  616.       edit and save a new configuration, or have a text configuration file.
  617.       I haven't decided yet which way to go. If you have any comments on
  618.       the subject, I would be glad to hear them. Please write to me via
  619.       email or any other means.
  620.  
  621.  
  622.       ╒═══════════════════════╕
  623.       │ 5. GUS & OTHER SHELLS │
  624.       ╘═══════════════════════╛
  625.  
  626.       Since GUS was first created, other authors have joined the club and
  627.       released their own versions of a utility that identifies archive
  628.       types and shells out to the appropriate unpacker programs.
  629.  
  630.       Some of those other shell programs come with source, others don't.
  631.       Some have configuration files, others don't.
  632.       Some are large, others small.
  633.       Only one is GUS and all the others "ain't"! :-)
  634.  
  635.       Why should you use GUS?
  636.  
  637.       1. GUS is small and fast. Other shell programs typically use a lot
  638.          more memory than GUS does.
  639.       2. GUS provides you with all possible commands to allow not only
  640.          automatic use, but also easy DOS command-line usage.
  641.       3. While scanning a file to determine the archive type, the
  642.          identification bytes have to be investigated in a well-defined
  643.          order. Only then, the program will not be fooled by things like
  644.          archives within archives.
  645.          GUS is the only program that does this flawlessly: it will never
  646.          be fooled.
  647.       4. GUS has built-in code especially designed for archives that have
  648.          their identification code at the end of the file.  If such an
  649.          archive has been transmitted by means of a protocol like
  650.          X-modem, some junk may have been appended to the file to make it
  651.          grow to the next 128 byte or even 1 K-byte boundary!
  652.          GUS is the *only* program that will recognize an archive with
  653.          appended junk because it can skip that while scanning.
  654.          (At this time, this is only needed for DWC archives, but you
  655.          never know...)
  656.       5. The HAP&PAH, HPack and DWC archivers require their compressed files
  657.          to have the respective extension '.HAP', 'HPK' and '.DWC' or else
  658.          they won't work with them. GUS knows this and will rename any such
  659.          archive that does not have the proper extension before calling
  660.          the dearchiver program and rename it back to the original name
  661.          afterwards.
  662.       6. Because *I* wrote it! <grin>
  663.  
  664.  
  665.       ╒════════════════════════════════╕
  666.       │ 6. HOW GUS IDENTIFIES ARCHIVES │
  667.       ╘════════════════════════════════╛
  668.  
  669.       GUS recognizes archives by searching for well-defined patterns in the
  670.       archive file. Such a pattern can be from 1 to 5 bytes in length and
  671.       it is extremely important that they be checked in the PROPER ORDER!
  672.       That is what distinguishes GUS from all it's competitors: most
  673.       programs do search for the right patterns (with the exception of the
  674.       pattern for ZOO, which is almost always wrong), but don't do this in
  675.       the proper order. That can result in faulty identifications,
  676.       specifically when encountering archives within archives.
  677.  
  678.       6.1. Recognition patterns as used by GUS
  679.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  680.       ArcType Offset  Pattern         Comment
  681.       ------- ------  ------------    -------------------------------
  682.       ARC     0       0x1A
  683.       ARC+    0       0x1A            Method byte (offset 1) of all
  684.       PAK                             entries needs to be scanned: if
  685.       HYP                             >= 0x0A then PAK;
  686.                                       >= 0x48 then HYP;
  687.                                       == 0x14 then ARC+
  688.                                       Note: PAK can also be recognized
  689.                                       by locating the byte 0xFE at offset
  690.                                       EOF-2, but GUS doesn't use that
  691.                                       because it is less accurate than
  692.                                       scanning the method bytes, which
  693.                                       has to be done anyway for identi-
  694.                                       fying ARC+ and HYP.
  695.                                       For completeness, the record layout
  696.                                       of an ARC archive will be given in
  697.                                       paragraph 6.2.
  698.       ARJ     0       0x60 0xEA
  699.       HA      0       'HA'            Offset 4 binary ANDed with 0xFC should
  700.                                       yield 0x20. This is an additional check
  701.                                       that GUS performs.
  702.       DWC     -3      'DWC'           Offset -3 means the third LAST byte
  703.                                       of the archive file.
  704.                                       It is possible that some junk is
  705.                                       present at the end of an archive,
  706.                                       because of Xmodem transmissions for
  707.                                       example.
  708.                                       In order to avoid GUS not recognizing
  709.                                       the archive because of this, the last
  710.                                       1028 bytes (or 343 triplets) are read
  711.                                       into a buffer and if that buffer
  712.                                       contains the string 'DWC', then we
  713.                                       have a DWC archive.
  714.                                       An additional check will be done,
  715.                                       however. The `DWC' string will have
  716.                                       to be the last item in a 27 byte
  717.                                       structure of which the first two
  718.                                       items are ArcStrucSize=27 (word size:
  719.                                       2 bytes) and DirStrucSize=34 (byte
  720.                                       size) before GUS will accept the file
  721.                                       to be a DWC archive.
  722.       LZH     2       '-l??-'         The '?' specifies a wildcard
  723.                                       character.
  724.       HAP     0       0x91 '3HF'
  725.       HPK     0       'HPAK'
  726.       UC2     0       'UC2' 0x1A
  727.       ZIP     0       'PK' 0x03 0x04
  728.       ZOO     20      0xDC 0xA7 0xC4 0xFD
  729.                                       Most other programs search for the
  730.                                       string 'ZOO' at the front of the
  731.                                       archive, but that is wrong! Only
  732.                                       the ZOO archives made using Rahul
  733.                                       Dhesi's program would be recognized
  734.                                       this way. ZOO archives made by an
  735.                                       Amiga or a computer running Unix
  736.                                       would not necessarily be recognized
  737.                                       this way.
  738.       SQZ     0       'HLSQZ'
  739.       RAR     0       'Rar!' 0x1A 0x07 0x00
  740.  
  741.  
  742.       6.2. Record layout of ARC/ARC+/PAK
  743.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  744.       var
  745.           ArcHeader : record
  746.                         Marker: Byte;
  747.                         Method: Byte;
  748.                         Name  : array [1..13] of char;
  749.                         Size  : DWord;
  750.                         Stamp : DWord;
  751.                         CRC   : Word;
  752.                         Length: DWord;
  753.                       end;
  754.  
  755.       Procedure to scan all archive entries:
  756.  
  757.       |begin
  758.       | seek(F,0);
  759.       | Done:=false;
  760.       | YieldARC:=ARC;
  761.       | repeat
  762.       |   {$I-}
  763.       |   blockread(F,ArcHeader,sizeof(ArcHeader));
  764.       |   {$I+}
  765.       |   if IOresult=0
  766.       |    then begin
  767.       |          if ArcHeader.Method>=PAKid
  768.       |           then begin
  769.       |                 Done:=true;
  770.       |                 YieldARC:=PAK;
  771.       |                 if ArcHeader.Method>=HYPid
  772.       |                  then YieldARC:=HYP
  773.       |                  else if ArcHeader.Method=ARPid
  774.       |                        then YieldARC:=ARp
  775.       |                end
  776.       |           else MoveFilePtr(F,ArcHeader.Size);
  777.       |         end
  778.       |    else Done:=true
  779.       | until Done
  780.       |end;
  781.  
  782.       This is of course all in Turbo Pascal, the language in which GUS was
  783.       written. The above are in fact literal excerpts from GUS's source
  784.       code.
  785.  
  786.  
  787.       6.3. How GUS identifies SFX (self-extracting) archives
  788.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  789.       The basic principle is simple. A self-extracting archive consists of an
  790.       extraction program in EXE form followed by the archive itself as
  791.       appended data.
  792.       The header of an EXE file contains information to determine the size of
  793.       the EXE portion of the file and hence the offset where the appended data
  794.       starts.
  795.       This proved to be true for all archive types, except for SFXs made by
  796.       MKSARC, the ZIP/sfx as used in PKLTE115.EXE and the ZIP/sfx for OS/2.
  797.       GUS has those offset values hardcoded.
  798.       Should you encounter other self-extracting archive types which GUS
  799.       doesn't recognize, please let me know. Don't forget to mention,
  800.       however, by which program those self-extractors were made.
  801.  
  802.  
  803.       6.4. Mandatory order for scanning the patterns
  804.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  805.               1 - RAR
  806.               2 - SQZ
  807.               3 - ZIP
  808.               4 - HPK
  809.               5 - UC2
  810.               6 - HAP
  811.               7 - ZOO
  812.               8 - LZH
  813.               9 - HA
  814.              10 - ARJ
  815.              11 - DWC
  816.              12 - ARC/ARC+/PAK/HYP
  817.  
  818.       This order is mandatory because it guarantees the greatest chance for
  819.       a correct recognition.
  820.       Every other order would increase the chance for a faulty result.
  821.       This is also the reason why the archive specifications are still
  822.       built into GUS and not given in a seperate configuration file (like
  823.       the one used by Jeffrey Nonken's PolyXarc, for example): I still
  824.       haven't found a good method to have GUS determine automatically in
  825.       which order the patterns have to be scanned, if a possibility exists
  826.       that new patterns would be added to the list. I can't expect the
  827.       users to include new patterns in the proper order themselves, can I?
  828.       Therefore, I don't think providing GUS with a CFG file is very
  829.       important at this time. I see no problem for providing a new GUS when
  830.       a new and exciting archiver is released.
  831.  
  832.       That's it folks! If you're curious: the TP source for GUS is about
  833.       900 lines in length. Those lines are `filled' in the same way as
  834.       those of the procedure quoted above.
  835.  
  836.       *** NOTE: you may use the scanning and identification method as used
  837.       by GUS and as described above in your own programs, but please be so
  838.       kind and don't forget the reference indicating where you got the
  839.       information!
  840.  
  841.  
  842.       ╒═════════════════════╕
  843.       │ 7. RUNTIME MESSAGES │
  844.       ╘═════════════════════╛
  845.  
  846.       GUS may produce a number of messages while it's working.
  847.       I will list all messages below, with an explanation what's wrong.
  848.  
  849.       [A] General information messages
  850.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  851.       MESSAGE: Child program returns exit code #
  852.       -> this message is given when the invoked unpacker program returns
  853.          control to GUS.  It shows the errorlevel returned by the
  854.          unpacker program.  The "#" will be replaced by the actual
  855.          exit code.
  856.  
  857.       [CHILD]: «unpacker_commandline»
  858.       -> this is shown in Quiet mode (/Q switch) instead of the
  859.          archiver's screen output.  The «unpacker_commandline» will be
  860.          replaced by just that.
  861.  
  862.       Extract: ALL files (XARC cannot extract specific files)
  863.       -> this message is shown when the first four characters of the
  864.          unpacker program definition string are "XARC".  Any files to
  865.          extract specified on the command-line will be ignored.
  866.  
  867.  
  868.       [B] Warning messages
  869.       ~~~~~~~~~~~~~~~~~~~~
  870.       WARNING: multiple target directories defined -- will use the LAST one!
  871.       -> you have defined more than one target path on the command-line.
  872.          GUS warns you that it will ignore all paths but the last.
  873.  
  874.       WARNING: you need to use /D (capital!) to have the unpacked archive
  875.                deleted.
  876.       -> you have specified "/d" in lower case. For security reasons, GUS
  877.          will only accept a capital D for the Delete switch.
  878.  
  879.       WARNING: unknown switch /X ignored
  880.       -> you have specified a switch that GUS doesn't know.  In the above
  881.          warning message, the "X" will be replaced by the actual
  882.          character (converted to upper case) that you used.
  883.          GUS will continue but ignores this unknown switch.
  884.  
  885.       WARNING: a slash by itself is not a valid option -- ignored
  886.       -> you have typed a slash "/" followed by a space or an end-of-line.
  887.          GUS will continue and ignore this.
  888.  
  889.       WARNING: unknown parameter #9 «X» ignored
  890.       -> you have typed something on the command-line that GUS can't
  891.          decipher.  The actual word you typed will be inserted instead of
  892.          "X" in the above message, and the number of that parameter on
  893.          the commandline will be shown instead of the "9" above.
  894.  
  895.       WARNING: unable to determine archive type due to error
  896.                while opening file
  897.       -> for some reason, GUS can't open the file it has to investigate.
  898.          Bummer! GUS will simply skip it and continue with the next one, if
  899.          any.
  900.  
  901.       WARNING: can't open NUL device -- Quiet command ignored
  902.       -> this occurs most often if the /Q (Quiet) command is used and when
  903.          one or more TSRs were loaded with their output redirected to NUL.
  904.          This yields a DOS sharing violation error, hence this message from
  905.          GUS.
  906.  
  907.       WARNING: moving bad archive HHHHHHHH.XX9 to X:\Inbound\BADARC.GUS\
  908.       -> in mail unpack mode (/M switch), GUS was unable to unpack an
  909.          archive and warns you that it will be moved to the BADARC.GUS
  910.          subdirectory that GUS creates in the mail inbound directory.
  911.          The actual name of the bad archive will be inserted in the
  912.          message instead of "HHHHHHHH.XX9" and "X:\Inbound" will be
  913.          replaced by the path to your mail inbound directory.
  914.  
  915.       WARNING: switching to ARC type program for directory of A7+ archive
  916.       -> if the program XARC is configured for handling A7+, GUS will
  917.          switch to the archiver program configured for the ARC type for
  918.          viewing the archive contents (directory), since XARC has no
  919.          command to do it and both PKUNPAK and SEA's ARC 6.02 will list
  920.          the directory of an ARC+ archive just fine.
  921.  
  922.       WARNING: unsupported command -- will do normal extract instead
  923.       -> you tried to perform an action not supported by the particular
  924.          archiver defined within GUS (i.e., issue a /T [test] command
  925.          with the HYPER archiver program).
  926.          GUS warns you it will ignore that command and do a normal
  927.          extract instead.
  928.  
  929.       WARNING: XXX type cannot be unpacked into embedded directories!
  930.       -> the unpacker program has no option to enable using embedded
  931.          directories or creating them, so all unpacking will be done
  932.          into the current directory, since that is the only way.
  933.  
  934.       WARNING: XXX type cannot be garbled - ignoring password...
  935.       -> you supplied an extraction password for an archive whose
  936.          unpacker program does not support password-protection.
  937.          GUS will continue the command while ignoring the /G switch.
  938.          The "XXX" will be replaced by the actual archive type detected.
  939.  
  940.       [C] Fatal error messages
  941.       ~~~~~~~~~~~~~~~~~~~~~~~~
  942.       >ERROR<: cannot read configuration information!
  943.       MESSAGE: aborting with exit code 255...
  944.       -> GUS complains it can't find the configuration information at the
  945.          bottom of its EXE file.  This means something is terribly wrong
  946.          with that EXE file.  You better delete it and get the original
  947.          release archive unpacked again!  (You *did* save that one,
  948.          didn't you?)
  949.  
  950.       >ERROR<: cannot create new filename for rename or move!
  951.       -> while trying to rename (like when an archiver need a fixed
  952.          extension) or move (like when a mailarchive couldn't be unpacked)
  953.          a file, GUS increments the filename (in case of a fixed extension)
  954.          or the extension (in case of a bad mailarchive) when it at first
  955.          doesn't succeed with the rename or move. If the filename or
  956.          extension cannot be incremented anymore and no other options are
  957.          left, GUS issues the above error message.
  958.  
  959.       >ERROR<: cannot erase unpacked archive!
  960.       -> in mail unpack mode (/M switch) or if the Delete option (/D switch)
  961.          was used, GUS is unable to delete the archive after it has been
  962.          unpacked successfully.
  963.          This more than likely means that the archive was marked
  964.          Read/Only.  You will have to unlock and delete it manually.
  965.          As mailarchives are created fresh upon receipt, it is very
  966.          unlikely that they would be marked R/O.
  967.  
  968.       >ERROR<: can't rename fixed extension back to original, leaving as is...
  969.       -> GUS had to rename an archive to a name with the fixed extension
  970.          required by archivers like DWC, HAP&PAH or HPACK and now it can't
  971.          rename the file back to the original name. This can normally only
  972.          happen in a multitasking environment, for instance when the archive
  973.          file was renamed, moved or deleted before GUS could rename it back.
  974.          GUS issues this error message and leaves the file as it was.
  975.  
  976.       >ERROR<: DOS couldn't execute «XXX» due to: YYY
  977.       -> GUS was unable to load and execute the unpacker program.
  978.          The path and name of that unpacker will be inserted in the error
  979.          message instead of "XXX" and the reason will be shown instead of
  980.          "YYY".  That reason will be one of 9 possible problems
  981.          described in section 3.1. "General Usage under DOS", EXIT CODES.
  982.          If the error code returned by DOS should be unknown to GUS, it
  983.          will display "DOS ERROR" followed by the error number instead.
  984.  
  985.       >ERROR<: error locating directory XXX
  986.                will unpack in current directory.
  987.       -> You specified a target directory GUS was unable to find.  The
  988.          target path specification will be ignored and the unpacking will
  989.          be done in the current directory.
  990.  
  991.       >ERROR<: «XXX» is no archive file or a type unkown to GUS!
  992.       -> GUS encountered a file that is not one of the known archive
  993.          types.  GUS will continue with the next file, if there is one.
  994.          "XXX" will be replaced by the actual archive name.
  995.  
  996.       >ERROR<: no such file(s)!
  997.       -> GUS was started with an archive filename specification, but no
  998.          such file could be found.  GUS will abort with errorlevel 221.
  999.  
  1000.       >ERROR<: no such mail directory!
  1001.       -> you specified a mail inbound directory (/M switch) that GUS was
  1002.          unable to locate.  GUS will end with errorlevel 220.
  1003.  
  1004.  
  1005.       ╒═════════════════════╕
  1006.       │ 8. ACKNOWLEDGEMENTS │
  1007.       ╘═════════════════════╛
  1008.  
  1009.     + PKUNPAK  FAST!  Archive Extract Utility  Version 3.61  08-02-88
  1010.       Copyright (c) 1986-1988 PKWARE Inc. All Rights Reserved.
  1011.  
  1012.     + PKUNZIP (R)    FAST!    Extract Utility    Version 2.04g  02-01-93
  1013.       Copr. 1989-1993 PKWARE Inc. All Rights Reserved. Shareware Version
  1014.       PKUNZIP Reg. U.S. Pat. and Tm. Off.
  1015.  
  1016.     + XARC - to decompress a standard ARC Format Archive, Ver 7.1,
  1017.       October, 1990
  1018.       Copyright 1990 by System Enhancement Associates, Inc.;
  1019.       ALL RIGHTS RESERVED
  1020.  
  1021.     + ARJ 2.41 Copyright (c) 1990-93 Robert K Jung. Jun 03 1993
  1022.       All Rights Reserved.  U.S. Patent No. 5,140,321 and patent pending.
  1023.  
  1024.     + DWC - Archive utility, Release 5.10, Created 3/07/90
  1025.       (C) Copyright 1986-90 by Dean W. Cooper; All rights reserved.
  1026.  
  1027.     + HA 0.98 Copyright (c) 1993 Harri Hirvola
  1028.  
  1029.     + Hamarsoft (R) Hap&Pah TM 3.00
  1030.       Copyright (C) 1992 By Harald Feldmann.
  1031.       Publicly Distributed evaluation copy.
  1032.  
  1033.     + HPACK - The multi-system archiver Version 0.78a0 (shareware version)
  1034.       For Amiga, Archimedes, Macintosh, MSDOS, OS/2, and UNIX
  1035.       Copyright (c) Peter Gutmann 1989 - 1992.  Release date: 1 Sept 1992
  1036.  
  1037.     + Hyper - Pack Utility 2.5
  1038.       Copyright (c) 1989,1990 P. Sawatzki and K.P. Nischke
  1039.  
  1040.     + LHA version 2.55b   Copyright (c) Haruyasu Yoshizaki, 1988-92
  1041.  
  1042.     + Pak 2.51 Copyright 1988-90 NoGate Consulting
  1043.  
  1044.     + RAR 1.50.2 beta   Copyright (c) 1993-94 Eugene Roshal   25 May 1994
  1045.  
  1046.     + SQZ -- Squeeze It(1.08.3), Jan 24 1993, Copyright J I Hammarberg
  1047.  
  1048.     + ░███   ░███  ░████      UltraCompressor II (tm)  revision 2
  1049.      ░█  ░█   ░█   ░█  ░█     "The new way of archiving."
  1050.      ░█████   ░█   ░████  -NL "Fast, reliable and superior compression."
  1051.      ░█  ░█   ░█   ░█ ──────────────────────────────────────────────────
  1052.      ░█  ░█  ░███  ░█ (C) Copyright 1994, Ad Infinitum Programs,
  1053.                        all rights reserved
  1054.  
  1055.     + Zoo archiver, Version 2.10 (1991/07/09 02:10:34)
  1056.       (C) Copyright 1991 Rahul Dhesi -- Noncommercial use permitted
  1057.  
  1058.     + ARCE Copyright (c) 1986-92 Vernon D. Buerg.
  1059.       Extract ARC files, Version 4.1a, 4/12/92. All rights reserved.
  1060.  
  1061.     + Conference Mail - Revision: 4.07 by Bob Hartman, FidoNet Node 132/101
  1062.       (C) Copyright 1986, 1987 by Spark Software Inc. All rights reserved.
  1063.  
  1064.     + █     █  █▀▀▀▀█ █     █ █▀▀▀▀▄  █    █ ▀▀█▀▀
  1065.       █   ▄▀   █      ▀▄   ▄▀ █    █  █    █   █
  1066.       █▄▄█     █▄▄▄     ▀█▀   █▀▀▀▀▄  █    █   █
  1067.       █▌  ▀▄   █▌        █▌   █▌   █▌ █▌   █   █▌
  1068.       ██   ▐█  ██▄▄██    ██   ██▄▄▄█  ██▄▄▄█ ▄▄██▄
  1069.       ╓──────────────────────────────────────────╖
  1070.       ║    Keyboard driver U.S. International    ║
  1071.       ╙──────────────────────────────────────────╜
  1072.             Copyright (C) 1993 and written by
  1073.                     Johan Zwiekhorst
  1074.                   ·ALL·RIGHTS·RESERVED·
  1075.           ═════════════════════════════════════
  1076.                       version  2.01
  1077.           ─────────────────────────────────────
  1078.       KEYBoard driver U.S. International (KEYBUI)
  1079.       will allow you to type accented characters,
  1080.       draw text graphic characters, blank your
  1081.       screen and more!  All this in a very easy way
  1082.       and with a standard U.S. QWERTY keyboard.
  1083.       Takes only 1.5K while resident.
  1084.  
  1085.  
  1086.       ╒═════════════════════╕
  1087.       │ 9. REVISION HISTORY │
  1088.       ╘═════════════════════╛
  1089.  
  1090.       Ver.   Comment
  1091.       ~~~~   ~~~~~~~
  1092.       1.90 - Supported the new Russian archiver RAR.
  1093.              It performs about comparable to the Dutch UC2 archiver.
  1094.            - Supported some new features of UltraCompressor II revision 2.
  1095.            - A system error would occur when GUS was used in an OS/2 DOS
  1096.              session and needed to shell out to one of the fixed extension
  1097.              archivers (DWC/HAP/HPK). That was due to a lack of stack space
  1098.              for GUS. Corrected. GUS now uses a stack of 8192 bytes.
  1099.  
  1100.       1.80 - Supported the new Dutch archiver UltraCompressor II (UC2).
  1101.              It performs consistently better than either PKZIP or ARJ, but HA
  1102.              and HPACK are still the best compressors around (albeit very
  1103.              slow).
  1104.            - Added the '/V' (View archive contents) command. Originally, I
  1105.              wanted to implement my own archive lister. However, since I still
  1106.              don't have the exact layout for a couple of archive types, I
  1107.              didn't want to keep you waiting any longer and provided the lister
  1108.              by shelling out to the appropriate archiver.
  1109.            - The GUS help screen will now also be shown when the user types
  1110.              GUS /?, GUS -?, GUS /h, GUS -h, GUS /H or GUS -H.
  1111.              Suggested by Hans Siemons (2:512/149).
  1112.            - If the drive is full (0 bytes free), GUS is unable to move
  1113.              a bad mailarchive away. GUS v1.70 would check the drive space
  1114.              and abort the move if less than 32 bytes would be free.
  1115.              32 bytes is indeed what's needed to create a new directory entry,
  1116.              but unfortunately this doesn't help much since DOS always needs
  1117.              the size of one cluster to allocate new space.
  1118.              This version of GUS will therefore check if at least the size of
  1119.              one cluster (or 256 bytes for HPFS volumes) is free.
  1120.              Error reported by Peter Smink (2:285/1).
  1121.            - GUS file /I will yield errorlevel 221 if the file doesn't exist,
  1122.              instead of errorlevel 1 reported by the previous version which was
  1123.              confusing (since it could also mean GUS found an ARC archive).
  1124.              Changed two errorlevels:
  1125.              ERROR                   ErrLev v1.70  ErrLev NOW
  1126.              ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^  ^^^^^^^^^^
  1127.              No Such Mail Directory! 0             220
  1128.              No Such File(s)!        1             221
  1129.              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1130.              Problem reported by Kianusch Sayah-Karadji (2:310/3.80) and
  1131.              Alex Cleynhens (2:292/500).
  1132.            - Just in case you were wondering: I'm using Borlands BPwO v7.0
  1133.              these days for compiling GUS. No, the sourcecode for GUS doesn't
  1134.              contain any OOP. I wanted to keep GUS small and OOP has a tendency
  1135.              to blow the size of EXE files to huge proportions.
  1136.  
  1137.       1.70 - Added support for the Dutch HAP archive format, which compresses
  1138.              at least 10% better than PKZIP v2.04.
  1139.            - Added support for the Finnish HA archiver, which beats PKZIP
  1140.              v2.04 by more than 20%!
  1141.            - Added the "/D" or Delete option.
  1142.            - Added detection of SFX (self-extracting) archives.
  1143.              GUS will recognize all EXE variants of the known archive types.
  1144.              Note: GUS can't handle COM self-extractors made by LHarc 1.xx,
  1145.              only the EXE sfx version.
  1146.            - If the drive is full (0 bytes free), GUS is unable to move
  1147.              a bad mailarchive away. It would take quite some time before
  1148.              GUS would give up trying, though. Fixed: GUS will check
  1149.              the drive space and abort the move if less than 32 bytes are
  1150.              free. (32 bytes is what's needed to create a new directory entry.)
  1151.            - If a file could not be opened for the purpose of determining
  1152.              the archive type, a runtime error 103 resulted. Fixed.
  1153.              Added a message: «WARNING: unable to determine archive type due
  1154.              to error while opening file».
  1155.            - Some people experienced strange `runtime 162' errors.
  1156.              Here's what happened...
  1157.              GUS tried to open the NUL device and create it. Some environments
  1158.              may have objected to that.
  1159.              I changed the code so that the NUL device is opened for writing
  1160.              only (no creation) and only if the /Q option is used, not always
  1161.              like before.
  1162.              This still caused some systems to yield that runtime error, so I
  1163.              added an error check and disabled the Quiet mode in case the NUL
  1164.              device cannot be opened. That should solve the `runtime 162'
  1165.              problem once and for all...
  1166.              Added a message: «WARNING: can't open NUL device -- Quiet command
  1167.              ignored».
  1168.              (This problem appeared mostly with systems that loaded TSRs and
  1169.              redirected their output to the NUL device. That causes DOS to
  1170.              open but never close the NUL device, so when GUS tries to open
  1171.              it, a sharing violation (runtime 162) occurs.)
  1172.              Thanks to Wim Van Sebroeck, 292/862 and Bert Hubert, 2:281/506.40
  1173.              for assisting me in finding a fix for this.
  1174.  
  1175.       1.61 - Fixed a bug which caused GUS to use the wrong archive name
  1176.              when operating with an archiver that requires a fixed archive
  1177.              extension (DWC and HPK at this time).
  1178.  
  1179.       1.60 - Added support for the HPACK archiver from Peter Gutmann, which
  1180.              makes the absolutely smallest archives at this time.
  1181.            - Added support for the Swedish SQZ archiver, which compresses
  1182.              better than ARJ 2.30 or the new PKZIP 1.93a!
  1183.            - Previously, the first three archive types were: ARC (#1), ARJ
  1184.              (#2) and ARC+ (#3). From now on, ARC+ will be #2 and ARJ #3.
  1185.              This is more logical. (The reason for the previous order was
  1186.              that GUS uses the abbreviation ARp internally for ARC+, and
  1187.              ARp comes after ARJ alphabetically.)
  1188.            - Due to a string length mismatch, GUS couldn't tell whether
  1189.              UsePath or UsePassword options were supported or not. The
  1190.              UsePath problem was reported by Wim Van Sebroeck (2:292/862)
  1191.              and by checking that, I discovered that the same was true for
  1192.              the UsePassword option. Corrected.
  1193.            - Added code to allow the Path option to replace a command
  1194.              instead of being added to it. (Indicated by `<' as the first
  1195.              character in the Path option in GUS_WCFG.PAS)
  1196.              Only needed for ARJ and SQZ at this time. (The previously used
  1197.              `e -jf' for ARJ doesn't seem to work equal to `x', so that was
  1198.              changed.)
  1199.            - GUS `forgot' about the specification indicating which files had
  1200.              to be extracted, once an ARC+ type archive had been worked on.
  1201.              Reported by Wim Van Sebroeck (2:292/862) and fixed.
  1202.            - If the specified target directory ended with a backslash (\),
  1203.              GUS wouldn't recognize it as the target directory. Reported by
  1204.              Wim Van Sebroeck (2:292/862) and fixed.
  1205.            - Extract command for ARJ changed from `e -n' to `e -uy' and
  1206.              modified some other archiver parameters in order to make the
  1207.              behaviour of various archiver programs more homogenious.
  1208.              GUS without /R option:
  1209.              (1) XARC and HYPER will ask you if they should overwrite older
  1210.                  files. Unfortunately, these programs have no command
  1211.                  options to work in batchmode and avoid this.
  1212.              (2) HPACK will never overwrite older files because it doesn't
  1213.                  have an option for this.
  1214.              (3) all other archivers will overwrite older files and skip
  1215.                  the rest.
  1216.              GUS with /R will cause existing files always to be
  1217.              overwritten.
  1218.            - If someone would combine several real commands on the GUS
  1219.              commandline, the effects might not be what one desires.
  1220.              Example: GUS * /T /R would start unpacking when one would
  1221.              expect it to ignore the replace command and do a test only.
  1222.              So I have changed the behaviour. The /T command now has priority
  1223.              over all other commands. This means that if you specify multiple
  1224.              commands, the /T (test) command will be executed and all others
  1225.              ignored. If you specify /P and /R, the /P has a higher priority
  1226.              and will be executed. The /R will be ignored. The priority of a
  1227.              command increases if it can do less damage. So the priority order
  1228.              for the GUS commands is in descending order: /I /T /P /R
  1229.              (remember: the other switches are options, not commands!).
  1230.              This problem was discovered after a tip by Alex Cleynhens
  1231.              (2:292/500).
  1232.            - Additional check for DWC archives. Apart from the string `DWC'
  1233.              in the last 1K of the file, it is now required that this string
  1234.              is the last item in a 27 byte structure for the file to be
  1235.              identified as a DWC archive.
  1236.            - GUS reported a runtime error when trying to rename an archive to
  1237.              a fixed extension and if the new name existed already. Reported
  1238.              by Wim Van Sebroeck (2:292/862). Fixed: the name is now
  1239.              incremented. Modified the routine which moves bad mailarchives
  1240.              to the BADARC.GUS subdirectory as well: if a file with the
  1241.              same name already exists in the BADARC.GUS subdirectory, the
  1242.              extension of the file to be moved is incremented.
  1243.            - GUS had a problem if the target directory was a root directory.
  1244.              In that case, it specified only the drive instead of the root
  1245.              directory. Reported by Wim Van Sebroeck (2:292/862). Fixed.
  1246.            - HPACK seems to require that its archives have a fixed extension
  1247.              of .HPK (like DWC does). GUS directory /M /T doesn't move bad
  1248.              archives into the BAD_ARC.GUS directory. Reported by Peter Smink
  1249.              (2:285/1). Fixed.
  1250.            - Various changes to the documentation.
  1251.  
  1252.       1.50 - Added the /N (/5) switch to prevent GUS using or creating
  1253.              paths embedded within archives.
  1254.            - Made this switch automatic while working with mail archives
  1255.              (/M).  Thanks to John Lots (2:512/36.3@fidonet.org) and Eef
  1256.              Hartman (2:281/603.5) for suggesting this and detecting the
  1257.              problem with this in GUS 1.40.
  1258.              /N is now also automatically invoked with /P and /T.
  1259.            - Changed the way the configuration information is stored a bit,
  1260.              since there was a useless amount of space being reserved for
  1261.              the "Unknown" type, which of course shouldn't have been saved.
  1262.            - Fixed a minor problem which caused a runtime error when
  1263.              GUS.EXE was given a read/only attribute.  Thanks to Rob
  1264.              Essers (2:283/406.2) for reporting this.
  1265.            - Cleaned up the batchfile listing in section 3.3 a bit.
  1266.              Thanks to Roelof Heuvel (27:3331/5000@signet.ftn) for the
  1267.              suggestion.
  1268.            - Fixed a minor problem which caused GUS to not append '.*'
  1269.              to a filename given without an extension when the pathame
  1270.              would contain a dot somewhere.  Thanks to Hans Siemons
  1271.              (2:285/214@fidonet.org) for reporting it.
  1272.            - Because of a space inserted between the appropriate switch to
  1273.              supply a password to an unarchiver and the actual password it-
  1274.              self, encrypted archives could never be unpacked. This is now
  1275.              fixed.
  1276.            - Made minor modifications for PKUNZIP 2.00, due to some changes
  1277.              in the way that one handles its command options.
  1278.            - The `use path' option was always supplied with the ZOO unpack
  1279.              commands. Corrected.
  1280.  
  1281.       1.40 - Removed MDCD archive support again, since nobody was likely
  1282.              to use it -- unless you're looking for the worst performing
  1283.              archiver ever, of course.
  1284.            - Added support for the new LHA version 2 archiver from Yoshi,
  1285.              which succeeds LHARC.  The previous version of GUS could
  1286.              already handle the new compression, but I didn't expect the
  1287.              name of the program to be changed.
  1288.            - Added support for the ARJ archiver program from Robert K.
  1289.              Jung, which yields nearly always the best compression and
  1290.              has a lot of features.
  1291.            - Added support for the HYPER archiver program from Germany,
  1292.              which seems to outperform every other archiver on 600..800K
  1293.              logfiles ONLY.  Weird.
  1294.            - Added support for ARCfiles made by the new ARC version 7
  1295.              compressor from SEA.  At this time, only one public domain
  1296.              extractor is available, which unfortunately lacks almost
  1297.              every feature GUS has to offer.
  1298.              My thanks to Donn Bly (1:236/7@fidonet.org) and Jeffrey
  1299.              Nonken (1:273/715@fidonet.org) for providing me with all the
  1300.              information on the ARC7+ archive format and the XARC
  1301.              program.
  1302.            - GUS is now fully commandline compatible with Vernon Buerg's
  1303.              ARCE program.  All of ARCE's switches are supported - except
  1304.              for /5, which prevents ARCE from creating subdirectories
  1305.              contained within ARCfile entries.
  1306.            - GUS provides two extra options: /I will identify an archive
  1307.              type by means of the exitcode (errorlevel) and /M will
  1308.              unpack and delete mailarchives in Fidonet Technology
  1309.              Networks.
  1310.            - BUGFIXES:
  1311.              * cleaned up handling zero-length and read/only files.
  1312.                From now on, GUS won't abort with a runtime error on
  1313.                those. 
  1314.              * you could only specify one single file to extract on GUS's
  1315.                commandline, although the help screen and manual suggested
  1316.                you could give more than one filespec.
  1317.                That's also corrected now, so you can indeed specify
  1318.                multiple files.
  1319.            - OTHER IMPROVEMENTS:
  1320.              * the code which detects the archive type has been completely
  1321.                re-written and now is a *lot* faster than before!
  1322.  
  1323.       1.31 - This version was never released, but mentioned in the
  1324.              documentation of the ARCA*Simulator v2.31 (ASIM_231.LZH).
  1325.  
  1326.       1.30 - This version was never released, but mentioned in the "Latest
  1327.              Software Versions" column of the FidoNews magazine.
  1328.  
  1329.       1.20M  Added MDCD archives, corrected an error which made GUS not
  1330.              recognize uncompressed file entries in an LZH archive, made sure
  1331.              the new compression method of PAK is supported, added features to
  1332.              allow selection of files and target directory for unpacking.
  1333.              This is a maintenance release, hence the 'M' behind the version
  1334.              number.
  1335.  
  1336.       1.10 - Added LZH archives, and changed the way DWC archives are
  1337.              identified in order to identify them even if up to 1K of rubbish
  1338.              is appended to the end of a DWC archive. This is useful for DWC
  1339.              archives which have been transferred by means of an Xmodem
  1340.              protocol.
  1341.  
  1342.       1.00 - Base version.  (Turbo Pascal 5.0)
  1343. _______________________________________________________________________(eof)__
  1344.